{
    { "w", "Output video width", __builtin_offsetof(ScaleContext, w_expr), AV_OPT_TYPE_STRING, .flags = 16|(1<<16)|(1<<15) },
    { "width", "Output video width", __builtin_offsetof(ScaleContext, w_expr), AV_OPT_TYPE_STRING, .flags = 16|(1<<16)|(1<<15) },
    { "h", "Output video height", __builtin_offsetof(ScaleContext, h_expr), AV_OPT_TYPE_STRING, .flags = 16|(1<<16)|(1<<15) },
    { "height","Output video height", __builtin_offsetof(ScaleContext, h_expr), AV_OPT_TYPE_STRING, .flags = 16|(1<<16)|(1<<15) },
    { "flags", "Flags to pass to libswscale", __builtin_offsetof(ScaleContext, flags_str), AV_OPT_TYPE_STRING, { .str = "" }, .flags = 16|(1<<16) },
    { "interl", "set interlacing", __builtin_offsetof(ScaleContext, interlaced), AV_OPT_TYPE_BOOL, {.i64 = 0 }, -1, 1, 16|(1<<16) },
    { "size", "set video size", __builtin_offsetof(ScaleContext, size_str), AV_OPT_TYPE_STRING, {.str = ((void*)0)}, 0, 16|(1<<16) },
    { "s", "set video size", __builtin_offsetof(ScaleContext, size_str), AV_OPT_TYPE_STRING, {.str = ((void*)0)}, 0, 16|(1<<16) },
    { "in_color_matrix", "set input YCbCr type", __builtin_offsetof(ScaleContext, in_color_matrix), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, AVCOL_SPC_NB-1, .flags = 16|(1<<16), "color" },
    { "out_color_matrix", "set output YCbCr type", __builtin_offsetof(ScaleContext, out_color_matrix), AV_OPT_TYPE_INT, { .i64 = AVCOL_SPC_UNSPECIFIED }, 0, AVCOL_SPC_NB-1, .flags = 16|(1<<16), "color"},
        { "auto", ((void*)0), 0, AV_OPT_TYPE_CONST, { .i64 = -1 }, 0, 0, 16|(1<<16), "color" },
        { "bt601", ((void*)0), 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_SPC_BT470BG }, 0, 0, 16|(1<<16), "color" },
        { "bt470", ((void*)0), 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_SPC_BT470BG }, 0, 0, 16|(1<<16), "color" },
        { "smpte170m", ((void*)0), 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_SPC_BT470BG }, 0, 0, 16|(1<<16), "color" },
        { "bt709", ((void*)0), 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_SPC_BT709 }, 0, 0, 16|(1<<16), "color" },
        { "fcc", ((void*)0), 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_SPC_FCC }, 0, 0, 16|(1<<16), "color" },
        { "smpte240m", ((void*)0), 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_SPC_SMPTE240M }, 0, 0, 16|(1<<16), "color" },
        { "bt2020", ((void*)0), 0, AV_OPT_TYPE_CONST, { .i64 = AVCOL_SPC_BT2020_NCL }, 0, 0, 16|(1<<16), "color" },
    { "in_range", "set input color range", __builtin_offsetof(ScaleContext, in_range), AV_OPT_TYPE_INT, {.i64 = AVCOL_RANGE_UNSPECIFIED }, 0, 2, 16|(1<<16), "range" },
    { "out_range", "set output color range", __builtin_offsetof(ScaleContext, out_range), AV_OPT_TYPE_INT, {.i64 = AVCOL_RANGE_UNSPECIFIED }, 0, 2, 16|(1<<16), "range" },
    { "auto", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_UNSPECIFIED }, 0, 0, 16|(1<<16), "range" },
    { "unknown", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_UNSPECIFIED }, 0, 0, 16|(1<<16), "range" },
    { "full", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_JPEG}, 0, 0, 16|(1<<16), "range" },
    { "limited",((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_MPEG}, 0, 0, 16|(1<<16), "range" },
    { "jpeg", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_JPEG}, 0, 0, 16|(1<<16), "range" },
    { "mpeg", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_MPEG}, 0, 0, 16|(1<<16), "range" },
    { "tv", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_MPEG}, 0, 0, 16|(1<<16), "range" },
    { "pc", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_JPEG}, 0, 0, 16|(1<<16), "range" },
    { "in_v_chr_pos", "input vertical chroma position in luma grid/256" , __builtin_offsetof(ScaleContext, in_v_chr_pos), AV_OPT_TYPE_INT, { .i64 = -513}, -513, 512, 16|(1<<16) },
    { "in_h_chr_pos", "input horizontal chroma position in luma grid/256", __builtin_offsetof(ScaleContext, in_h_chr_pos), AV_OPT_TYPE_INT, { .i64 = -513}, -513, 512, 16|(1<<16) },
    { "out_v_chr_pos", "output vertical chroma position in luma grid/256" , __builtin_offsetof(ScaleContext, out_v_chr_pos), AV_OPT_TYPE_INT, { .i64 = -513}, -513, 512, 16|(1<<16) },
    { "out_h_chr_pos", "output horizontal chroma position in luma grid/256", __builtin_offsetof(ScaleContext, out_h_chr_pos), AV_OPT_TYPE_INT, { .i64 = -513}, -513, 512, 16|(1<<16) },
    { "force_original_aspect_ratio", "decrease or increase w/h if necessary to keep the original AR", __builtin_offsetof(ScaleContext, force_original_aspect_ratio), AV_OPT_TYPE_INT, { .i64 = 0}, 0, 2, 16|(1<<16), "force_oar" },
    { "disable", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = 0 }, 0, 0, 16|(1<<16), "force_oar" },
    { "decrease", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = 1 }, 0, 0, 16|(1<<16), "force_oar" },
    { "increase", ((void*)0), 0, AV_OPT_TYPE_CONST, {.i64 = 2 }, 0, 0, 16|(1<<16), "force_oar" },
    { "force_divisible_by", "enforce that the output resolution is divisible by a defined integer when force_original_aspect_ratio is used", __builtin_offsetof(ScaleContext, force_divisible_by), AV_OPT_TYPE_INT, { .i64 = 1}, 1, 256, 16|(1<<16) },
    { "param0", "Scaler param 0", __builtin_offsetof(ScaleContext, param[0]), AV_OPT_TYPE_DOUBLE, { .dbl = 1.7976931348623157e+308 }, -1.7976931348623157e+308, 1.7976931348623157e+308, 16|(1<<16) },
    { "param1", "Scaler param 1", __builtin_offsetof(ScaleContext, param[1]), AV_OPT_TYPE_DOUBLE, { .dbl = 1.7976931348623157e+308 }, -1.7976931348623157e+308, 1.7976931348623157e+308, 16|(1<<16) },
    { "eval", "specify when to evaluate expressions", __builtin_offsetof(ScaleContext, eval_mode), AV_OPT_TYPE_INT, {.i64 = EVAL_MODE_INIT}, 0, EVAL_MODE_NB-1, 16|(1<<16), "eval" },
         { "init", "eval expressions once during initialization", 0, AV_OPT_TYPE_CONST, {.i64=EVAL_MODE_INIT}, .flags = 16|(1<<16), .unit = "eval" },
         { "frame", "eval expressions during initialization and per-frame", 0, AV_OPT_TYPE_CONST, {.i64=EVAL_MODE_FRAME}, .flags = 16|(1<<16), .unit = "eval" },
    { ((void*)0) }
}
